架构设计在现今已经成为软件开发必不可少的环节,而架构学习和架构选型往往是一个困难的“工程”。若有一天我们想要改善现有软件的架构模式,或对架构的选择感到迷茫,我们应该如何找寻方向,选择合适的架构呢?本文帮你认清团队规模和目前存在的问题,并分别针对大、中小团队及创业公司给出推荐架构选型方案。
团队规模代表着新技术的学习成本。
团队规模与软件规模有一定关联。
团队规模强调开发效率和软件可维护性的重要性。
如今敏捷开发盛行,越来越多的公司倾向于从大型团队中剥离出几个小团队,管理不同的业务模块。一般,每个小团队由4~6人组成,这样的模式更能提高软件问题的解决效率,这也是一些管理者认为的最佳团队规模。如果你在大公司,那么很有可能你就处于这种流行的、类似分治思想的团队之中。大型技术团队
你也有可能处在中小型技术团队之中,这种团队可能会负责一般规模的软件系统,但是这里的开发人员或许要比大型技术团队中的开发人员掌握更多的技术,而且其忙碌程度也可能更高。所以,团队规模并不能代表团队中开发人员的工作任务难度和技术学习成本。还有一种可能是你处在创业公司,或是非科技公司的“团队”,即独立开发者。你一个人要负责整个App的维护。App规模或小或大,对于开发者来说,在掌握业务的基础上,他可能还需要关心App的构建与发布等问题。独立开发者如图16.7所示。
后面将针对大型技术团队、中小型技术团队和独立开发者,提供架构选型的建议。
在认清团队规模后,你还需要找出团队目前存在的问题,即系统内部问题和系统外部条件。系统的一部分问题可能是由于外界带来的需求而产生,一部分问题可能是内部团队的规则定制所带来的,在架构选型之前,我们可以通过内部和外部的调研,找出系统目前存在的问题,再选择最有利的架构模型。
在MVX系列架构模型中,MVC架构的Massive View Controller问题已经被太多的开发者所不能接受,选择MVC架构模式对于软件需求变化的快速响应,并不是十分有利。而MVP架构是移动开发现阶段比较流行的架构模式之一。使用MVP进行面向接口编程,在大型技术团队的大型软件项目中,非常有利于业务组件之间的解耦,MVP架构是大型技术团队的适用架构模式。MVP的Presenter具有复用性问题,我们可以选择使用The Clean Architecture系列架构来解决这一问题,将业务逻辑划分为更小的类,在大型软件项目中更利于业务逻辑的维护和代码的抽象设计。MVVM架构同样是推荐的架构之一,但是在移动开发中,开发者对MVVM架构的理解与使用并没有像MVP架构这样普遍,使用MVVM架构会增加学习成本。使用MVVM架构的同时,可以引入Google官方推荐的架构组件AAC。对于大型技术团队而言,若将团队划分为多个小型业务团队,那么模块化系列架构是尤其推荐的架构模式,组件化架构可以将项目分而治之,这与团队组成形式的特点有着相同之处,插件化架构可以根据团队的业务需求而进行选择。所以,对于大型技术团队维护的大型软件项目,非常推荐MVP架构,可以考虑The Clean Architecture系列架构,同时推荐使用组件化技术将架构进行组件划分。而对于可以接受学习成本的团队,也推荐使用MVVM架构和Android Architecture Components系列组件。
在中小型技术团队中,技术选型有着更高的灵活性,团队成员对技术的学习成本的重视程度相对而言更低一些。在中小型技术团队中,使用MVVM架构设计和Google官方推荐的Android Architecture Components系列组件是非常不错的选择。大多数时候,中小型技术团队人员扩增可能并没有大型技术团队那样迅速,所以,技术的学习成本并不是一个非常棘手的问题,进而提高了选择MVVM架构的可能性,在此基础上使用Dagger2实现依赖注入,使用RxJava2进行函数响应式编程也是不错的选择。而MVP架构同样是推荐的架构模式之一。组件化设计在中小型技术团队是一个备选方案,在软件业务规模并不是很大的时候,可以选择后期再考虑重构。
独立开发者的架构选型具有更高的灵活性,架构选型在外部受业务需求的影响,在内部受团队开发者的技术掌握程度的影响。由于MVP架构涉及更多的面向接口编程,对于独立开发者而言,可能在某种程度上提高了开发的复杂度,所以,相比MVP架构,MVC架构和MVVM架构是更推荐的方案。而函数响应式编程相关框架RxJava2也可以用来为独立开发者提供优雅的编程模式,独立开发者在维护规模并不大的移动应用系统时,可能并不需要处理非常复杂的依赖关系,所以,可以在需要的时候再考虑Dagger2。
在现今的技术盛世中,各种架构模式“百花齐放”,然而每种架构模式的概念都比较晦涩难懂,这不仅使得一部分初学者“从入门到放弃”,也让进阶人员耗费了太多的学习成本。帮助你搞定移动开发架构设计的《移动开发架构设计实战》一书现已上市,在移动架构开发中传承整洁架构之道!
传世经典《程序员修炼之道》作者 Andy Hunt 等专业人士力荐,帮助入门开发者了解架构模式,进阶开发者掌握架构模式,技术领导者进行架构选型,并填补移动端或Android架构实战书籍的空白。
(扫码了解本书详情)
专注:50+实战案例。填补移动开发架构设计书籍空白易读:学习门槛低。内容精练,语言通俗易懂
█ 关 于 作 译 者
网易新闻架构技术组工程师,沐暄网创始人
Oracle、Adobe等企业认证专家
10年互联网经验,曾就职于世界500强企业核心技术实验室
擅长移动端架构设计、项目重构与Intellij插件开发
参与网易新闻组件化架构设计,视频模块、统计模块等多模块重构
喜欢创新和研究
传世经典《程序员修炼之道》一书作者 Andy Hunt 对本书赞誉道:Congratulations to Leo on the publication of this book. Most people don't realize how much hard work and care goes into a book, but I can tell you it is quite a lot. Read this book and take advantage of Leo's hard work and experience. After all, the person who does not read books has no advantage over a person who can not.
何青 / 网易资深Android工程师、前百度贴吧工程师,作者导师
刘望舒 / 《Android进阶之光》《Android进阶解密》作者,无线技术专家
Yury Camacho / GDG发起人,著名国际演讲者,谷歌技术专家(GDE)
▼ 点击阅读原文,获取本书详情!